perm filename DSKSIM.FAI[CMS,LCS]2 blob sn#419997 filedate 1979-02-23 generic text, type T, neo UTF8
00100		TITLE SIMU
00200		EXTERNAL $I
00300		A←1 ↔ X←2 ↔ Y←3 ↔ SP←4 ↔ PS←5 ↔ PC←6
00400		IR←7 ↔ B←←10 ↔ C←←11 ↔ D←←12 ↔ F←←16
00500		E←←13 ↔ DR←←14 ↔ MA←←15 ↔ P←17 ↔ NBUFS←←4
00600		CBIT←←1 ↔ ZBIT←←2 ↔ IBIT←←4 ↔ DBIT←←10
00700		BRKBIT←←20 ↔ VBIT←←100 ↔ NBIT←←200
00800		RSTV←177774 ↔ NMIV←177772 ↔ IRQV←177776
00900		PONE←←400 ↔ NEG1←←377 ↔ BNINE←←400
01000		ZHW←777400 ↔ ZHW16←600000 ↔ IOBIT←200000
01100		IOMSK←400000 ↔ RAMBIT←100000
01200	
01300		BRK	←←0
01400		ORAIX	←←1
01500		ORAZ	←←5
01600		ASLZ	←←6
01700	
01800		PHP	←10
01900		ORAI	←11
02000		ASLA	←12
02100		ORA	←15
02200		ASL	←16
02300	
02400		BPL	←20
02500		ORAIY	←21
02600		ORAZX	←25
02700		ASLZX	←26
02800	
02900		CLC	←30
03000		ORAY	←31
03100		ORAX	←35
03200		ASLX	←36
03300	
03400		JSR	←40
03500		ANDIX	←41
03600		BITZ	←44
03700		ANDZ	←45
03800		ROLZ	←46
03900	
04000		PLP	←50
04100		ANDI	←51
04200		ROLA	←52
04300		BIT	←54
04400		AND	←55
04500		ROL	←56
     

00100		BMI	←60
00200		ANDIY	←61
00300		ANDZX	←65
00400		ROLZX	←66
00500	
00600		SEC	←70
00700		ANDY	←71
00800		ANDX	←75
00900		ROLX	←76
01000		
01100		RTI	←100
01200		EORIX	←101
01300		EORZ	←105
01400		LSRZ	←106
01500	
01600		PHA	←110
01700		EORI	←111
01800		LSRA	←112
01900		JMP	←114
02000		EOR	←115
02100		LSR	←116
02200	
02300		BVC	←120
02400		EORIY	←121
02500		EORZX	←125
02600		LSRZX	←126
02700	
02800		CLI	←130
02900		EORY	←131
03000		EORX	←135
03100		LSRX	←136
03200	
03300		RTS	←140
03400		ADCIX	←141
03500		ADCZ	←145
03600		RORZ	←146
03700	
03800		PLA	←150
03900		ADCI	←151
04000		RORA	←152
04100		JMPIN	←154
04200		ADC	←155
04300		ROR	←156
04400	
04500		BVS	←160
04600		ADCIY	←161
04700		ADCZX	←165
04800		RORZX	←166
04900		
05000		SEI	←170
05100		ADCY	←171
05200		ADCX	←175
05300		RORX	←176
05400	
05500		STAIX	←201
05600		STYZ	←204
05700		STAZ	←205
05800		STXZ	←206
05900	
06000		DEY	←210
06100		TXA	←212
06200		STY	←214
06300		STA	←215
06400		STX	←216
     

00100		BCC	←220
00200		STAIY	←221
00300		STYZX	←224
00400		STAZX	←225
00500		STXZY	←226
00600	
00700		TYA	←230
00800		STAY	←231
00900		TXS	←232
01000		STAX	←235
01100	
01200		LDYI	←240
01300		LDAIX	←241
01400		LDXI	←242
01500		LDYZ	←244
01600		LDAZ	←245
01700		LDXZ	←246
01800	
01900		TAY	←250
02000		LDAI	←251
02100		TAX	←252
02200		LDY	←254
02300		LDA	←255
02400		LDX	←256
02500	
02600		BCS	←260
02700		LDAIY	←261
02800		LDYZX	←264
02900		LDAZX	←265
03000		LDXZY	←266
03100	
03200		CLV	←270
03300		LDAY	←271
03400		TSX	←272
03500		LDYX	←274
03600		LDAX	←275
03700		LDXY	←276
     

00100		CPYI	←300
00200		CMPIX	←301
00300		CPYZ	←304
00400		CMPZ	←305
00500		DECZ	←306
00600	
00700		INY	←310
00800		CMPI	←311
00900		DEX	←312
01000		CPY	←314
01100		CMP	←315
01200		DEC	←316
01300	
01400		BNE	←320
01500		CMPIY	←321
01600		CMPZ	←325
01700		DECZX	←326
01800	
01900		CLD	←330
02000		CMPY	←331
02100		CMPX	←335
02200		DECX	←336
02300	
02400		CPXI	←340
02500		SBCIX	←341
02600		CPXZ	←344
02700		SBCZ	←345
02800		INCZ	←346
02900	
03000		INX	←350
03100		SBCI	←351
03200		NOP	←352
03300		CPX	←354
03400		SBC	←355
03500		INC	←356
03600	
03700		BEQ	←360
03800		SBCIY	←361
03900		SBCZX	←365
04000		INCZX	←366
04100	
04200		SED	←370
04300		SBCY	←371
04400		SBCX	←375
04500		INCX	←376
     

00100	ZWD:	-1,,777400
00200	ZWD16:	-1,,600000
00300	PDL:	BLOCK 100
00400	
00500	R:	BYTE (7) 175,175,175,"O","A"
00600		BYTE (7) 175,";","X",175,";"
00700		BYTE (7) "Y",175,";","S","P"
00800		BYTE (7) 175,";","P","S",175
00900		BYTE (7) ";","P","C",175,";"
01000		BYTE (7) 175,175,175,"C","I"
01100		BYTE (7) "R",175,";"
01200	
01300	SS:	BYTE (7) "X","C","U","T","E"
01400		BYTE (7) 175,"B",175,"P"
01500	
01600	STAR:	RESET
01700		HRLZI MEM
01800		HRRI MEM+1
01900		SETOM MEM
02000		BLT MEM+77777
02100	MAP:	MOVE P,[PDPO:	IOWD 100,PDL]
02200		SETZ X,
02300		MOVE D,[RAMBIT,,RAMBIT]
02400		PUSHJ P,MEMDF
02500		PUSHJ P,DEFA
02600		AOJ X,
02700		SETZ D,
02800		PUSHJ P,MEMDF
02900		PUSHJ P,DEFA
03000		AOJ X,
03100		MOVE D,[IOMSK,,IOMSK]
03200		PUSHJ P,MEMDF
03300		PUSHJ P,DEFA
03400	
03500	GFILE:	CLRBFI
03600		OUTSTR [ASCIZ/
03700		DMP FILE = /]
03800		PUSHJ P,GNAME
03900		OPEN 11,[14↔'DSK   '↔IBUF]
04000		JRST 4,.
04100		INBUF 11,NBUFS
04200		LOOKUP 11,FILNAM
04300		CAIA
04400		PUSHJ P,LOADER
04500	
04600	ZRG:	MOVE [1,,2]
04700		SETZ A,
04800		BLT PC
04900	RST:	MOVE P,PDPO
05000		PUSHJ P,SETRST
05100		JSR $I
05200	
05300	FETCH:	SKIPE E,IFLG#
05400		PUSHJ P,INTR
05500		PUSHJ P,IFTCH
05600		HRRZI IR,(DR)
05700	XCUTE:	PUSHJ P,@INSTBL(IR)
05800		JRST FETCH
05900	
06000	INTR:	CAIN E,RSTV
06100		JRST RES
06200		TRNE E,-1
06300		JRST NOCK
06400		TRNE PS,IBIT
06500		POPJ P,
06600		HRRZI E,IRQV
06700		MOVEM E,IFLG
06800	NOCK:	PUSHJ P,PUPC+1
06900		PUSHJ P,@INSTBL+PHP
07000	RES:	HRRZ PC,IFLG
07100		TRO PS,IBIT
07200		HRRZI DR,JMP
07300		SETZ E,
07400		HRRM E,IFLG
07500		AOS (P)
07600		POPJ P,
     

00100	LOADER:	PUSHJ P,INP+1
00200		HRRZI X,200
00300		ADD X,IBUF+2
00400		HRLZI Y,-100000
00500	LOAD:	PUSHJ P,INP
00600		HRLZ A,1(X)
00700		AOBJP X,GIN
00800	GMO:	HRR A,1(X)
00900		ORM A,MEM(Y)
01000		AOBJP Y,DONE
01100		AOBJN X,LOAD+1
01200		JRST LOAD
01300	
01400	DONE:	POPJ P,
01500	
01600	GIN:	PUSHJ P,INP
01700		JRST GMO
01800	
01900	INP:	HRRM X,IBUF+1
02000		IN 11,
02100		JRST SETX
02200		STATO 11,20000
02300		JRST 4,.
02400		POP P,
02500		POPJ P,
02600	
02700	SETX:	HRRZ X,IBUF+2
02800		MOVNI X,(X)
02900		HRLZI X,(X)
03000		HRR X,IBUF+1
03100		POPJ P,
03200		
03300	DEFA:	MOVE DR,BTBL(X)
03400		MOVEM D,-1(DR)
03500		BLT DR,@DTBL(X)
03600		POPJ P,
03700	
03750	   ;Block start addresses.
03800	BTBL:	MEM,,MEM+1	;RAM
04000		MEM+76000,,MEM+76001	;PROM
04050		MEM+4000,,MEM+4001	;I/O
04100	
04150	   ;Last word of blocks.
04200	DTBL:	MEM+777	;RAM
04400		MEM+77777	;PROM
04450		MEM+17777	;I/O
04500	
04600	STRTBL:	[ASCIZ/
04700		RAM BLOCK (ADR ∨ L:H) = /]
04800		[ASCIZ/
04900		ROM BLOCK (ADR ∨ L:H) = /]
05000		[ASCIZ*
05100		I/O BLOCK (ADR ∨ L:H) = *]
     

00100	ERRO:	OUTSTR [ASCIZ/	???
00200	/]
00300	MEMDF:	CLRBFI
00400		OUTSTR @STRTBL(X)
00500		INCHWL A
00600		CAIN A,15
00700		POPJ P,
00800		PUSHJ P,INNUM
00900		TDNE ZWD16
01000		JRST ERRO
01100		HRRZ DR,
01200		INCHRS A
01300		JRST ERRO
01400		CAIN A,12
01500		JRST ONEAD
01600		PUSHJ P,INNUM
01700		TDNE ZWD16
01800		JRST ERRO
01900	MKIT:	HRRZI E,(DR)
02000		LSH DR,-1
02100		ADDI DR,MEM
02200		HRRZ MA,
02300		LSH MA,-1
02400		CAILE DR,MEM(MA)
02500		JRST ERRO
02600		AOS (P)		;FOR NOT DEFALT
02700		ANDI E,1
02800		JUMPE E,EVEN
02900		HRRM D,(DR)
03000		CAIL DR,MEM(MA)
03100		JRST MEMDF
03200		AOJ DR,
03300	EVEN:	ANDI 1
03400		JUMPN MOV
03500		HLLM D,MEM(MA)
03600		CAIL DR,MEM(MA)
03700		JRST MEMDF
03800		SOJ MA,
03900	MOV:	MOVEM D,(DR)
04000		CAIL DR,MEM(MA)
04100		JRST MEMDF
04200		HRLI DR,(DR)
04300		AOJ DR,
04400		BLT DR,MEM(MA)
04500		JRST MEMDF
04600	
04700	ONEAD:	HRRZI (DR)
04800		JRST MKIT
04900	
05000	INNUM:	SETZ
05100		CAIL A,60
05200		CAILE A,67
05300		POPJ P,
05400		IMULI 10
05500		ADDI -60(A)
05600		INCHRS A
05700		POPJ P,
05800		JRST INNUM+1
     

00100	MTST:	HRRZI D,(DR)
00200		LSH DR,-1
00300		ANDI D,1
00400		XCT POTBL(D)
00500		TRNE ZHW	;TEST FOR ROM
00600		SKIPL C,	;TEST FOR RAM
00700		POPJ P,
00800	NRAM:	TRNN IOBIT
00900		JRST IO
01000	ILMEM:	JSR $I
01100		POPJ P,
01200	
01300	POTBL:	HLRE MEM(DR)
01400		HRRE MEM(DR)
01500	
01600	UDO:	JSR $I
01700		POPJ P,
01800	
01900	MFTCH:	HRRZI DR,(MA)
02000		PUSHJ P,MTST
02100		TDZ ZWD
02200		POPJ P,
02300	
02400	IFTCH:	HRRZI DR,(PC)
02500		PUSHJ P,MTST
02600		TDZ ZWD
02700		HRRZ DR,
02800		AOJ PC,
02900		TRZ PC,ZHW16
03000		POPJ P,
03100	
03200	AFTCH:	PUSHJ P,IFTCH
03300		HRRZI MA,(DR)
03400		PUSHJ P,IFTCH
03500		LSH 10
03600		OR MA,
03700		POPJ P,
03800		
03900	DPTBL:	HRLM MEM(DR)
04000		HRRM MEM(DR)
04100	
04200	MEMDP:	TDZ ZWD
04300		HRRZ D,
04400		HRRZI DR,(MA)
04500		LSH DR,-1
04600		ANDI MA,1
04700		XCT POTBL(MA)
04800		TRNN ZHW
04900		JRST WROM
05000		SETZ C,
05100		SKIPG
05200		PUSHJ P,NRAM
05300		ANDI ZHW
05400		ORI (D)
05500		XCT DPTBL(MA)
05600		POPJ P,
05700	
05800	WROM:	JSR $I
05900		POPJ P,
     

00050	IO:	MOVE ,[IOMSK,,IOMSK]	;For fetch from I/O.
00075		POPJ P,	;For no I/O.
00100	;IO:	TDZ D,ZWD
00200		SKIPL C
00300		JRST WRT
00400		SKIPE D
00500		JRST RDCON
00600		JRST CKDD
00700	WRT:	SKIPE MA	;TEST FOR CONTROL REG
00800		POPJ P,
00900	CKDD:	HRRZ E,MEM(DR)	;GET CON REG
01000		TRNN E,4	;DD BIT
01100		POPJ P,		;DD REG
01200		SKIPL C
01300		JRST RITEIT
01400		TRZ E,300	;RESET FLGS
01500		HRRM E,MEM(DR)
01600		TRNE DR,1	;TEST FOR PRA (KB)
01700		JRST READB
01800		HRRZ PREGA
01900		POPJ P,
02000	READB:	HRRZ PREGB
02100		POPJ P,
02200	
02300	PREGA:	0
02400	PREGB:	0
02500		
02600	RDCON:	TRNE DR,1	
02700		POPJ P,		;CRB
02800		HRRZ C,
02900		ANDI C,6
03000		CAIE C,6	;CK INPUT ENB
03100		POPJ P,
03200		INCHRW E	;CHECK FOR INPUT
03300		CAIN E,"I"∨200	;CK FOR NMI
03400		JRST SETNMI
03500		CAIN E,"I"	;CK FOR IRQ
03600		JRST SETIRQ
03700		CAIN E,"R"	;CK FOR RST
03800		JRST SETRST
03900		ANDI E,17
04000		CAILE E,11
04100		POPJ P,
04200		HRRZM E,PREGA
04300		TRO 200		;SET KB FLG BIT
04400		POPJ P,
04500	
04600	SETIRQ:	SETO E,
04700		HRLM E,IFLG
04800		POPJ P,
04900	SETNMI:	HRRZI E,NMIV
05000		CAIA
05100	SETRST:	HRRZI E,RSTV
05200		HRRM E,IFLG
05300		POPJ P,
05400		
05500	RITEIT:	TRNE DR,1	
05600		JRST LEDO
05700		HRRZM D,PREGA	;SAVE IT
05800		JRST POPIT
05900	
06000	LEDO:	HRRZM D,PREGB	;SAVE IT
06100		ANDI E,54
06200		CAIE E,54	;CHECK FOR PULSE SET
06300		JRST POPIT
06400		HRRZI C,4
06500	STRCH:	LSHC D,-1
06600		LSH E,-6
06700		SOJG C,STRCH
06800		OR E,[ASCID/0000 /]
06900		CAIGE D,2
07000		JRST DPYVAL
07100		CAILE D,5
07200		JRST POPIT
07300		MOVNI D,(D)
07400		MOVEM E,DPYTBL+5(D)
07500		JRST DPYS
07600	DPYVAL:	MOVNI D,(D)
07700		MOVEM E,VALTBL+1(D)
07800	
07900	DPYS:	PUSHJ P,DPYIT
08000		OUTSTR DPYTBL
08100	
08200	POPIT:	POP P,C
08300		POPJ P,
08400	
08500	DPY:	BYTE (8) 46,0,46 (3) 1,2,1,4
08600		BYTE (8) 2,1,10 (3)3,4,5,4
08700	
08800		ASCID/ 
08900	 
09000	 
09100	 /
09200	DPYTBL:	BLOCK 4
09300		ASCID/ 
09400	 
09500	 
09600	           /
09700	VALTBL:	BLOCK 2
09800		ASCID/ 
09900	 
10000	 
10100	 
10200	 
10300	 
10400	 
10500	 
10600	 /
10700		0
     

00100		dddlin ←←20000
00200	
00300	DPYIT:	MOVEM SVZ#
00400	
00500	
00600	outdd:	dpypos -620
00700		dpysiz 5001
00800		movni 1
00900	
01000		getlin
01100	
01200		tlnn dddlin
01300		JRST BACK
01400	
01500		DDUPG	BUFFPT
01600	
01700		AOS (P)
01800	BACK:	MOVE SVZ
01900		POPJ P,
02000	
02100	SVAC:	BLOCK 17
02200	
02300	buffpt:	200000,,DPY
02400		23
02500		0
02600		DPY+1
02700	
02800	erase:	ddupg	erspt
02900		popj	p,
03000	ersbuf:	BYTE (8) 17,0,46 (3) 1,2,1,4	;funct. code, chan select, funct. code
03100		0
03200	erspt:	ersbuf
03300		erspt-ersbuf
03400		0
03500		0
     

00100	ZPAGE:	PUSHJ P,IFTCH
00200		HRRZI MA,(DR)
00300		PUSHJ P,MFTCH
00400		POPJ P,
00500	
00600	ZPX:	PUSHJ P,IFTCH
00700		HRRZI MA,(DR)
00800		ADDI MA,(X)
00900		TRZ MA,ZHW
01000		PUSHJ P,MFTCH
01100		POPJ P,
01200	
01300	ZPY:	PUSHJ P,IFTCH
01400		HRRZI MA,(DR)
01500		ADDI MA,(X)
01600		TRZ MA,ZHW
01700		PUSHJ P,MFTCH
01800		POPJ P,
01900	
02000	ABS:	PUSHJ P,AFTCH
02100		PUSHJ P,MFTCH
02200		POPJ P,]
02300	
02400	ABX:	PUSHJ P,AFTCH
02500		ADDI MA,(X)
02600		TRZ MA,ZHW16
02700		PUSHJ P,MFTCH
02800		POPJ P,
02900	
03000	ABY:	PUSHJ P,AFTCH
03100		ADDI MA,(Y)
03200		TRZ MA,ZHW16
03300		PUSHJ P,MFTCH
03400		POPJ P,
03500	
03600	INDX:	PUSHJ P,IFTCH
03700		ADDI (X)
03800		TRZ ZHW
03900		HRRZ MA,
04000		PUSHJ P,MFTCH
04100		HRRZ F,
04200		AOJ MA,
04300		PUSHJ P,MFTCH
04400		LSH 10
04500		OR F,
04600		HRRZI MA,(F)
04700		PUSHJ P,MFTCH
04800		POPJ P,
04900	
05000	INDY:	PUSHJ P,ZPAGE
05100		HRRZ F,
05200		AOJ MA,
05300		PUSHJ P,MFTCH
05400		LSH 10
05500		ADDI (F)
05550		ADDI (Y)
05600		HRRZ MA,
05700		PUSHJ P,MFTCH
05800		POPJ P,]
     

00100	LDIM:	PUSHJ P,IFTCH
00200		PUSHJ P,NZTST
00300		POPJ P,
00400	LDZ:	PUSHJ P,ZPAGE
00500		PUSHJ P,NZTST
00600		POPJ P,
00700	LDAAB:	PUSHJ P,ABS
00800		PUSHJ P,NZTST
00900		POPJ P,
01000	LDAABX:	PUSHJ P,ABX
01100		PUSHJ P,NZTST
01200		POPJ P,
01300	LDAABY:	PUSHJ P,ABY
01400		PUSHJ P,NZTST
01500		POPJ P,]
01600	LDZX:	PUSHJ P,ZPX
01700		PUSHJ P,NZTST
01800		POPJ P,
01900	LDZY:	PUSHJ P,ZPY
02000		PUSHJ P,NZTST
02100		POPJ P,
02200	LDIX:	PUSHJ P,INDX
02300		PUSHJ P,NZTST
02400		POPJ P,
02500	LDIY:	PUSHJ P,INDY
02600		PUSHJ P,NZTST
02700		POPJ P,
02800	STZ:	PUSHJ P,IFTCH
02900		HRRZ MA,
03000		HRRZI (B)
03100		PUSHJ P,MEMDP
03200		POPJ P,
03300	STAAB:	PUSHJ P,AFTCH
03400		HRRZI (B)
03500		PUSHJ P,MEMDP
03600		POPJ P,
03700	STIX:	PUSHJ P,INDX
03800		HRRZI (B)
03900		PUSHJ P,MEMDP
04000		POPJ P,
04100	STIY:	PUSHJ P,INDY
04200		HRRZI (B)
04300		PUSHJ P,MEMDP
04400		POPJ P,
04500	STZX:	PUSHJ P,ZPX
04600		HRRZI (B)
04700		PUSHJ P,MEMDP
04800		POPJ P,
04900	STZY:	PUSHJ P,ZPY
05000		HRRZI (B)
05100		PUSHJ P,MEMDP
05200		POPJ P,
05300	STAABX:	PUSHJ P,ABX
05400		HRRZI (B)
05500		PUSHJ P,MEMDP
05600		POPJ P,
05700	STAABY:	PUSHJ P,ABY
05800		HRRZI (B)
05900		PUSHJ P,MEMDP
06000		POPJ P,
     

00100	PUTCH:	HRRZI MA,PONE(SP)
00200		PUSHJ P,MEMDP
00300		SOSGE SP
00400		HRRZI SP,NEG1
00500		POPJ P,
00600	
00700	PUL:	AOJ SP,
00800		TDZ SP,ZWD
00900		HRRZI MA,PONE(SP)
01000		PUSHJ P,MFTCH
01100		POPJ P,
01200	
01300	PUPC:	PUSHJ P,IFTCH
01400		HRRZI (PC)
01500		LSH -10
01600		PUSHJ P,PUTCH
01700		HRRZI (PC)
01800		PUSHJ P,PUTCH
01900		POPJ P,
02000	
02100	NZTST:	TRZ PS,NBIT∨ZBIT
02200		SKIPN
02300		TROE PS,ZBIT
02400		TRNN NBIT
02500		POPJ P,
02600		TRO PS,NBIT
02700		POPJ P,
02800	
02900	CNZTST:	TRZ PS,CBIT
03000		TDZE ZWD
03100		TRO PS,CBIT
03200		PUSHJ P,NZTST
03300		POPJ P,
03400	
03500	BITS:	TRZ PS,NBIT∨VBIT∨ZBIT
03600		TRNE NBIT
03700		TRO PS,NBIT
03800		TRNE VBIT
03900		TRO PS,VBIT
04000		SKIPN
04100		TRO PS,ZBIT
04200		POPJ P,
04300	
04400	BRNCH:	TRNE DR,NBIT
04500		TDO DR,ZWD
04600		ADD PC,DR
04700		TDZ ZWD16
04800		POPJ P,
04900	
05000	BRT:	PUSHJ P,IFTCH
05100		TRNE PS,(B)
05200		PUSHJ P,BRNCH
05300		POPJ P,
05400	
05500	BRF:	PUSHJ P,IFTCH
05600		TRNN PS,(B)
05700		PUSHJ P,BRNCH
05800		POPJ P,
     

00100	ORAC:	OR A
00200		PUSHJ P,NZTST
00300		HRRZ A,
00400		POPJ P,
00500	
00600	ASLF:	LSH 1
00700		PUSHJ P,CNZTST
00800		POPJ P,
00900	
01000	AAND:	AND A
01100		PUSHJ P,NZTST
01200		HRRZ A,
01300		POPJ P,
01400	
01500	EORA:	XORI (A)
01600		PUSHJ P,NZTST
01700		HRRZ A,
01800		POPJ P,
01900	
02000	LSRT:	TRZ PS,NBIT∨ZBIT∨CBIT
02100		TRNE 1
02200		TRO PS,CBIT
02300		LSH -1
02400		SKIPN
02500		TRO PS,ZBIT
02600		POPJ P,
02700	
02800	ROLF:	LSH 1
02900		TRNE PS,CBIT
03000		TRO 1
03100		PUSHJ P,CNZTST
03200		POPJ P,
03300	
03400	INCM:	AOJ
03500		TRZ ZHW
03600		PUSHJ P,NZTST
03700		POPJ P,
03800	
03900	DECM:	SOSGE
04000		HRRZI NEG1
04100		PUSHJ P,NZTST
04200		POPJ P,
     

00100	ADDER:	TRZ PS,VBIT
00200		TRNN NBIT
00300		JRST POS
00400		PUSHJ P,ALUX
00500		TRNE B,NBIT
00600		TRNE PS,NBIT
00700		POPJ P,
00800		JRST OV
00900	
01000	POS:	PUSHJ P,ALUX
01100		TRNN B,NBIT
01200		TRNN PS,NBIT
01300		POPJ P,
01400	OV:	TRO PS,VBIT
01500		POPJ P,
01600	
01700	ALUX:	ADDI (B)
01800		TRNE PS,CBIT
01900		AOJ
02000		PUSHJ P,CNZTST
02100		POPJ P,
02200	
02300	SUBER:	TRC NEG1
02400		PUSHJ P,ADDER
02500		POPJ P,
02600		
02700	ADCA:	HRRZI B,(A)
02800		PUSHJ P,ADDER
02900		HRRZ A,
03000		POPJ P,
03100	
03200	SBCA:	HRRZI B,(A)
03300		PUSHJ P,SUBER
03400		HRRZ A,
03500		POPJ P,
03600	
03700	CMPER:	TRC NEG1
03800		TRO PS,CBIT
03900		PUSHJ P,ALUX
04000		POPJ P,
04100	
04200	CMPM:	HRRZI B,(A)
04300		PUSHJ P,CMPER
04400		POPJ P,
04500	CPXM:	HRRZI B,(X)
04600		PUSHJ P,CMPER
04700		POPJ P,
04800	CPYM:	HRRZI B,(Y)
04900		PUSHJ P,CMPER
05000		POPJ P,
     

00100	INSTBL:	
00200	[	TRO PS,BRKBIT		;BRK	0
00300		PUSHJ P,PUPC
00400		PUSHJ P,@INSTBL+PHP
00500		TRO PS,IBIT
00600		HRRZI PC,IRQV
00700		PUSHJ P,@INSTBL+JMP
00800		POPJ P,]
00900	[	PUSHJ P,INDX		;ORAIX	1
01000		PUSHJ P,ORAC
01100		POPJ P,]
01200	UDO
01300	UDO
01400	UDO
01500	[	PUSHJ P,ZPAGE		;ORAZ	5
01600		PUSHJ P,ORAC
01700		POPJ P,]
01800	[	PUSHJ P,ZPAGE		;ASLZ	6
01900		PUSHJ P,ASLF
02000		PUSHJ P,MEMDP
02100		POPJ P,]
02200	UDO
02300	
02400	[	HRRZI (PS)		;PHP	10
02500		PUSHJ P,PUTCH
02600		POPJ P,]
02700	[	PUSHJ P,IFTCH		;ORAI	11
02800		PUSHJ P,ORAC
02900		POPJ P,]
03000	[	HRRZI (A)		;ASLA	12
03100		PUSHJ P,ASLF
03200		HRRZ A,
03300		POPJ P,]
03400	UDO
03500	UDO
03600	[	PUSHJ P,ABS		;ORA	13
03700		PUSHJ P,ORAC
03800		POPJ P,]
03900	[	PUSHJ P,ABS		;ASL	14
04000		PUSHJ P,ASLF
04100		PUSHJ P,MEMDP
04200		POPJ P,]
04300	UDO
04400	
04500	[	HRRZI B,NBIT		;BPL
04600		PUSHJ P,BRF
04700		POPJ P,]
04800	[	PUSHJ P,INDY		;ORAIY
04900		PUSHJ P,ORAC
05000		POPJ P,]
05100	UDO
05200	UDO
05300	UDO
05400	[	PUSHJ P,ZPX		;ORAZ
05500		PUSHJ P,ORAC
05600		POPJ P,]
05700	[	PUSHJ P,ZPX		;ASLZ
05800		PUSHJ P,ASLF
05900		PUSHJ P,MEMDP
06000		POPJ P,]
06100	UDO
     

00100	[	TRZ PS,CBIT		;CLC
00200		POPJ P,]
00300	[	PUSHJ P,ABY		;ORAY
00400		PUSHJ P,ORAC
00500		POPJ P,]
00600	UDO
00700	UDO
00800	UDO
00900	[	PUSHJ P,ABX		;ORAX
01000		PUSHJ P,ORAC
01100		POPJ P,]
01200	[	PUSHJ P,ABX		;ASLX
01300		PUSHJ P,ASLF
01400		PUSHJ P,MEMDP
01500		POPJ P,]
01600	UDO
01700	
01800	[	HRRZI 1(PC)		;JSR
01900		LSH -10	
02000		PUSHJ P,PUTCH
02100		HRRZI 1(PC)
02200		PUSHJ P,PUTCH
02300		PUSHJ P,@INSTBL+JMP
02400		POPJ P,]
02500	[	PUSHJ P,INDX		;ANDIX
02600		PUSHJ P,AAND
02700		POPJ P,]
02800	UDO
02900	UDO
03000	[	PUSHJ P,ZPAGE		;BITZ
03100		PUSHJ P,BITS
03200		POPJ P,]
03300	[	PUSHJ P,ZPAGE		;ANDZ
03400		PUSHJ P,AAND
03500		POPJ P,]
03600	[	PUSHJ P,ZPAGE		;ROLZ
03700		PUSHJ P,ROLF
03800		PUSHJ P,MEMDP
03900		POPJ P,]
04000	UDO
     

00100	[	PUSHJ P,PUL		;PLP
00200		HRRZ PS,
00300		POPJ P,]
00400	[	PUSHJ P,IFTCH		;ANDI
00500		PUSHJ P,AAND
00600		POPJ P,]
00700	[	HRRZI (A)		;ROLA
00800		PUSHJ P,ROLF
00900		HRRZ A,
01000		POPJ P,]
01100	UDO
01200	[	PUSHJ P,ABS
01300		PUSHJ P,BITS
01400		POPJ P,]
01500	[	PUSHJ P,ABS
01600		PUSHJ P,AAND
01700		POPJ P,]
01800	[	PUSHJ P,ABS
01900		PUSHJ P,ROLF
02000		PUSHJ P,MEMDP
02100		POPJ P,]
02200	UDO
02300	
02400	[	HRRZI B,NBIT
02500		PUSHJ P,BRT
02600		POPJ P,]
02700	[	PUSHJ P,INDY
02800		PUSHJ P,AAND
02900		POPJ P,]
03000	UDO
03100	UDO
03200	UDO
03300	[	PUSHJ P,ZPX
03400		PUSHJ P,AAND
03500		POPJ P,]
03600	[	PUSHJ P,ZPX
03700		PUSHJ P,ROLF
03800		PUSHJ P,MEMDP
03900		POPJ P,]
04000	UDO
04100	
04200	[	TRO PS,CBIT
04300		POPJ P,]
04400	[	PUSHJ P,ABY
04500		PUSHJ P,AAND
04600		POPJ P,]
04700	UDO
04800	UDO
04900	UDO
05000	[	PUSHJ P,ABX
05100		PUSHJ P,AAND
05200		POPJ P,]
05300	[	PUSHJ P,ABX
05400		PUSHJ P,ROLF
05500		PUSHJ P,MEMDP
05600		POPJ P,]
05700	UDO
     

00100	[	PUSHJ P,PUL		;RTI
00200		HRRZ PS,
00300		PUSHJ P,@INSTBL+RTS
00400		SOJ PC,
00500		POPJ P,]
00600	[	PUSHJ P,INDX		;EROIX
00700		PUSHJ P,EORA
00800		POPJ P,]
00900	UDO
01000	UDO
01100	UDO
01200	[	PUSHJ P,ZPAGE		;EORZ
01300		PUSHJ P,EORA
01400		POPJ P,]
01500	[	PUSHJ P,ZPAGE		;LSRZ
01600		PUSHJ P,LSRT
01700		PUSHJ P,MEMDP
01800		POPJ P,]
01900	UDO
02000	
02100	[	HRRZI (A)		;PHA
02200		PUSHJ P,PUTCH
02300		POPJ P,]
02400	[	PUSHJ P,IFTCH		;EORI
02500		PUSHJ P,EORA
02600		POPJ P,]
02700	[	HRRZI (A)		;LSRA
02800		PUSHJ P,LSRT
02900		HRRZ A,
03000		POPJ P,]
03100	UDO
03200	[	PUSHJ P,AFTCH		;JMP
03300		HRRZI PC,(MA)
03400		POPJ P,]
03500	[	PUSHJ P,ABS		;EOR
03600		PUSHJ P,EORA
03700		POPJ P,]
03800	[	PUSHJ P,ABS		;LSR
03900		PUSHJ P,LSRT
04000		PUSHJ P,MEMDP
04100		POPJ P,]
04200	UDO
     

00100	[	HRRZI B,VBIT		;BVC
00200		PUSHJ P,BRF
00300		POPJ P,]
00400	[	PUSHJ P,INDY		;EORIY
00500		PUSHJ P,EORA
00600		POPJ P,]
00700	UDO
00800	UDO
00900	UDO
01000	[	PUSHJ P,ZPX		;EORZX
01100		PUSHJ P,EORA
01200		POPJ P,]
01300	[	PUSHJ P,ZPX		;LSRZX
01400		PUSHJ P,LSRT
01500		PUSHJ P,MEMDP
01600		POPJ P,]
01700	UDO
01800	
01900	[	TRZ PS,IBIT		;CLI
02000		POPJ P,]
02100	[	PUSHJ P,ABY		;EORY
02200		PUSHJ P,EORA
02300		POPJ P,]
02400	UDO
02500	UDO
02600	UDO
02700	[	PUSHJ P,ABX		;EORX
02800		PUSHJ P,EORA
02900		POPJ P,]
03000	[	PUSHJ P,ABX		;LSRX
03100		PUSHJ P,LSRT
03200		PUSHJ P,MEMDP
03300		POPJ P,]
03400	UDO
     

00100	[	PUSHJ P,PUL	;RTS
00200		HRRZ PC,
00300		PUSHJ P,PUL
00400		LSH 10
00500		OR PC,
00600		AOJ PC,
00700		TDZ PC,ZWD16
00800		POPJ P,]
00900	[	PUSHJ P,INDX	;ADCIX
01000		PUSHJ P,ADCA
01100		POPJ P,]
01200	UDO
01300	UDO
01400	UDO
01500	[	PUSHJ P,ZPAGE	;ADCZ
01600		PUSHJ P,ADCA
01700		POPJ P,]
01800	UDO	;[	PUSHJ P,ZPAGE	;RORZ
01900	;	PUSHJ P,RORA
02000	UDO
02100	
02200	[	PUSHJ P,PUL	;PLA
02300		HRRZ A,
02400		POPJ P,]
02500	[	PUSHJ P,IFTCH
02600		PUSHJ P,ADCA
02700		POPJ P,]
02800	UDO
02900	UDO
03000	[	PUSHJ P,ABS	;JMPIN
03100		HRRZ PC,
03200		AOJ MA,
03300		PUSHJ P,MFTCH
03400		LSH 10
03500		OR PC,
03600		PUSHJ P,@INSTBL+JMP
03700		POPJ P,]
03800	[	PUSHJ P,ABS
03900		PUSHJ P,ADCA
04000		POPJ P,]
04100	UDO
04200	UDO
04300	
04400	[	HRRZI B,VBIT
04500		PUSHJ P,BRT
04600		POPJ P,]
04700	[	PUSHJ P,INDY
04800		PUSHJ P,ADCA
04900		POPJ P,]
05000	UDO
05100	UDO
05200	UDO
05300	[	PUSHJ P,ZPX
05400		PUSHJ P,ADCA
05500		POPJ P,]
05600	UDO
05700	UDO
     

00100	[	TRO PS,IBIT		;SEI
00200		POPJ P,]
00300	[	PUSHJ P,ABY		;ADCY
00400		PUSHJ P,ADCA
00500		POPJ P,]
00600	UDO
00700	UDO
00800	UDO
00900	[	PUSHJ P,ABX
01000		PUSHJ P,ADCA
01100		POPJ P,]
01200	UDO
01300	UDO
01400	
01500	UDO
01600	[	HRRZI B,(A)
01700		PUSHJ P,STIX
01800		POPJ P,]
01900	UDO
02000	UDO
02100	[	HRRZI B,(Y)
02200		PUSHJ P,STZ
02300		POPJ P,]
02400	[	HRRZI B,(A)
02500		PUSHJ P,STZ
02600		POPJ P,]
02700	[	HRRZI B,(X)
02800		PUSHJ P,STZ
02900		POPJ P,]
03000	UDO
03100	
03200	[	HRRZI (Y)
03300		PUSHJ P,DECM
03400		HRRZ Y,
03500		POPJ P,]
03600	UDO
03700	[	HRRZI (X)
03800		PUSHJ P,NZTST
03900		HRRZI A,(X)
04000		POPJ P,]
04100	UDO
04200	[	HRRZI B,(Y)
04300		PUSHJ P,STAAB
04400		POPJ P,]
04500	[	HRRZI B,(A)
04600		PUSHJ P,STAAB
04700		POPJ P,]
04800	[	HRRZI B,(X)
04900		PUSHJ P,STAAB
05000		POPJ P,]
05100	UDO
     

00100	[	HRRZI B,CBIT	;BCC
00200		PUSHJ P,BRF
00300		POPJ P,]
00400	[	HRRZI B,(A)
00500		PUSHJ P,STIY
00600		POPJ P,]
00700	UDO
00800	UDO
00900	[	HRRZI B,(Y)
01000		PUSHJ P,STZX
01100		POPJ P,]
01200	[	HRRZI B,(A)
01300		PUSHJ P,STZX
01400		POPJ P,]
01500	[	HRRZI B,(X)
01600		PUSHJ P,STZY
01700		POPJ P,]
01800	UDO
01900	
02000	[	HRRZI (Y)
02100		PUSHJ P,NZTST
02200		HRRZI A,(Y)
02300		POPJ P,]
02400	[	HRRZI B,(A)
02500		PUSHJ P,STAABY
02600		POPJ P,]
02700	[	HRRZI SP,(X)
02800		POPJ P,]
02900	UDO
03000	UDO
03100	[	HRRZI B,(A)
03200		PUSHJ P,STAABX
03300		POPJ P,]
03400	UDO
03500	UDO
03600	
03700	[	PUSHJ P,LDIM
03800		HRRZ Y,
03900		POPJ P,]
04000	[	PUSHJ P,LDIX
04100		HRRZ A,
04200		POPJ P,]
04300	[	PUSHJ P,LDIM
04400		HRRZ X,
04500		POPJ P,]
04600	UDO
04700	[	PUSHJ P,LDZ
04800		HRRZ Y,
04900		POPJ P,]
05000	[	PUSHJ P,LDZ
05100		HRRZ A,
05200		POPJ P,]
05300	[	PUSHJ P,LDZ
05400		HRRZ X,
05500		POPJ P,]
05600	UDO
     

00100	[	HRRZI (A)
00200		PUSHJ P,NZTST
00300		HRRZI Y,(A)
00400		POPJ P,]
00500	[	PUSHJ P,LDIM
00600		HRRZ A,
00700		POPJ P,]
00800	[	HRRZI (A)
00900		PUSHJ P,NZTST
01000		HRRZI X,(A)
01100		POPJ P,]
01200	UDO
01300	[	PUSHJ P,LDAAB
01400		HRRZ Y,
01500		POPJ P,]
01600	[	PUSHJ P,LDAAB
01700		HRRZ A,
01800		POPJ P,]
01900	[	PUSHJ P,LDAAB
02000		HRRZ X,
02100		POPJ P,]
02200	UDO
02300	
02400	[	HRRZI B,CBIT	;BCS
02500		PUSHJ P,BRT
02600		POPJ P,]
02700	[	PUSHJ P,LDIY	;LDAIY
02800		HRRZ A,
02900		POPJ P,]
03000	UDO
03100	UDO
03200	[	PUSHJ P,LDZX
03300		HRRZ Y,
03400		POPJ P,]
03500	[	PUSHJ P,LDZX
03600		HRRZ A,
03700		POPJ P,]
03800	[	PUSHJ P,LDZY
03900		HRRZ X,
04000		POPJ P,]
04100	UDO
04200	
04300	[	TRZ PS,VBIT
04400		POPJ P,]
04500	[	PUSHJ P,LDAABY	;LDAY
04600		HRRZ A,
04700		POPJ P,]
04800	[	HRRZI X,(SP)
04900		POPJ P,]
05000	UDO
05100	[	PUSHJ P,LDAABX
05200		HRRZ Y,
05300		POPJ P,]
05400	[	PUSHJ P,LDAABX
05500		HRRZ A,
05600		POPJ P,]
05700	[	PUSHJ P,LDAABY
05800		HRRZ X,
05900		POPJ P,]
06000	UDO
     

00100	[	PUSHJ P,IFTCH
00200		PUSHJ P,CPYM
00300		POPJ P,]
00400	[	PUSHJ P,INDX
00500		PUSHJ P,CMPM
00600		POPJ P,]
00700	UDO
00800	UDO
00900	[	PUSHJ P,ZPAGE
01000		PUSHJ P,CPYM
01100		POPJ P,]
01200	[	PUSHJ P,ZPAGE
01300		PUSHJ P,CMPM
01400		POPJ P,]
01500	[	PUSHJ P,ZPAGE
01600		PUSHJ P,DECM
01700		PUSHJ P,MEMDP
01800		POPJ P,]
01900	UDO
02000	
02100	[	HRRZI (Y)
02200		PUSHJ P,INCM
02300		HRRZ Y,
02400		POPJ P,]
02500	[	PUSHJ P,IFTCH
02600		PUSHJ P,CMPM
02700		POPJ P,]
02800	[	HRRZI (X)
02900		PUSHJ P,DECM
03000		HRRZ X,
03100		POPJ P,]
03200	UDO
03300	[	PUSHJ P,ABS
03400		PUSHJ P,CPYM
03500		POPJ P,]
03600	[	PUSHJ P,ABS
03700		PUSHJ P,CMPM
03800		POPJ P,]
03900	[	PUSHJ P,ABS
04000		PUSHJ P,DECM
04100		PUSHJ P,MEMDP
04200		POPJ P,]
04300	UDO
04400	
04500	[	HRRZI B,ZBIT
04600		PUSHJ P,BRF
04700		POPJ P,]
04800	[	PUSHJ P,INDY
04900		PUSHJ P,CMPM
05000		POPJ P,]
05100	UDO
05200	UDO
05300	UDO
05400	[	PUSHJ P,ZPX
05500		PUSHJ P,CMPM
05600		POPJ P,]
05700	[	PUSHJ P,ZPX
05800		PUSHJ P,DECM
05900		PUSHJ P,MEMDP
06000		POPJ P,]
06100	UDO
     

00100	[	TRZ PS,DBIT
00200		POPJ P,]
00300	[	PUSHJ P,ABY
00400		PUSHJ P,CMPM
00500		POPJ P,]
00600	UDO
00700	UDO
00800	UDO
00900	[	PUSHJ P,ABX
01000		PUSHJ P,CMPM
01100		POPJ P,]
01200	[	PUSHJ P,ABX
01300		PUSHJ P,DECM
01400		PUSHJ P,MEMDP
01500		POPJ P,]
01600	UDO
01700	
01800	[	PUSHJ P,IFTCH
01900		PUSHJ P,CPXM
02000		POPJ P,]
02100	[	PUSHJ P,INDX
02200		PUSHJ P,SBCA
02300		POPJ P,]
02400	UDO
02500	UDO
02600	[	PUSHJ P,ZPAGE
02700		PUSHJ P,CPXM
02800		POPJ P,]
02900	[	PUSHJ P,ZPAGE
03000		PUSHJ P,SBCA
03100		POPJ P,]
03200	[	PUSHJ P,ZPAGE
03300		PUSHJ P,INCM
03400		PUSHJ P,MEMDP
03500		POPJ P,]
03600	UDO
03700	
03800	[	HRRZI (X)
03900		PUSHJ P,INCM
04000		HRRZ X,
04100		POPJ P,]
04200	[	PUSHJ P,IFTCH
04300		PUSHJ P,SBCA
04400		POPJ P,]
04500	[	POPJ P,]
04600	UDO
04700	[	PUSHJ P,ABS
04800		PUSHJ P,CPXM
04900		POPJ P,]
05000	[	PUSHJ P,ABS
05100		PUSHJ P,SBCA
05200		POPJ P,]
05300	[	PUSHJ P,ABS
05400		PUSHJ P,INCM
05500		PUSHJ P,MEMDP
05600		POPJ P,]
05700	UDO
     

00100	[	HRRZI B,ZBIT
00200		PUSHJ P,BRT
00300		POPJ P,]
00400	[	PUSHJ P,INDY
00500		PUSHJ P,SBCA
00600		POPJ P,]
00700	UDO
00800	UDO
00900	UDO
01000	[	PUSHJ P,ZPX
01100		PUSHJ P,SBCA
01200		POPJ P,]
01300	[	PUSHJ P,ZPX
01400		PUSHJ P,INCM
01500		PUSHJ P,MEMDP
01600		POPJ P,]
01700	UDO
01800	
01900	[	TRO PS,DBIT
02000		POPJ P,]
02100	[	PUSHJ P,ABY
02200		PUSHJ P,SBCA
02300		POPJ P,]
02400	UDO
02500	UDO
02600	UDO
02700	[	PUSHJ P,ABX
02800		PUSHJ P,SBCA
02900		POPJ P,]
03000	[	PUSHJ P,ABX
03100		PUSHJ P,INCM
03200		PUSHJ P,MEMDP
03300		POPJ P,]
03400	UDO
     

00100	IBUF:	BLOCK 4
00200	FILNAM:	0
00300	FILEXT:	0
00400		0
00500	FILPPN:	0
00600	
00700	GNAME:	SETZM FILEXT+1
00800		SETZM FILPPN
00900		MOVE A,['DMP   ']
01000		MOVEM A,FILEXT
01100		PUSHJ P,GETNAM
01200		SKIPN A
01300	 	MOVE A,['ROM   ']
01400	GEXT:	MOVEM A,FILNAM
01500		CAIE C,"."
01600		JRST NOEXTN
01700		PUSHJ P,GETNAM
01800		MOVEM A,FILEXT
01900	NOEXTN:	CAIE C,"["
02000		JRST FFDX
02100		PUSHJ P,GETP
02200		HRLZM A,FILPPN
02300		PUSHJ P,GETP
02400		HRRM A,FILPPN
02500	FFDX:	INCHRW C
02600		CAIE C,12
02700		JRST FFDX
02800		POPJ P,
     

00100	GETNAM:	MOVEI A,
00200		MOVE B,[440600,,A]
00300	GETNML:	PUSHJ P,RCH
00400		POPJ P,
00500		SUBI C,40
00600		TLNE B,770000
00700		IDPB C,B
00800		JRST GETNML
00900	
01000	GETP:	MOVEI A,
01100	GETPL:	PUSHJ P,RCH
01200		POPJ P,
01300		TRNE A,770000
01400		JRST GETPL
01500		LSH A,6
01600		ADDI A,-40(C)
01700		JRST GETPL
01800	
01900	RCH:	INCHWL C
02000		CAIN C,42
02100		JRST RCHQ
02200		CAIE C,11
02300		CAIN C," "
02400		JRST RCH
02500		CAIE C,"."
02600		CAIN C,","
02700		POPJ P,
02800		CAIE C,"["
02900		CAIN C,"]"
03000		POPJ P,
03100	RCHQR:	CAIGE C,40
03200		POPJ P,
03300		CAIL C,"a"
03400		CAILE C,"z"
03500		CAIA
03600		SUBI C,40
03700	POPJ1:	AOS (P)
03800		POPJ P,
03900	
04000	RCHQ:	INCHWL C
04100		JRST RCHQR
04200	
04300	MEM:	BLOCK 100000
04400		END STAR